[系统安全] 二十八.CS逆向分析 (1)你的游戏子弹用完了吗?Cheat Engine工具入门
前文分享了WannaCry勒索病毒,主要通过IDA和OD逆向分析蠕虫传播部分,详细讲解蠕虫是如何感染传播的。这篇文章将回到逆向知识,利用Cheat Engine工具逆向分析游戏CS1.6,并实现无限子弹功能。基础性文章,主要让大家看看逆向基础,并给反外挂工程师一些思考和借鉴。同时,本文参考B站老师的视频(文末),希望对您有所帮助,如果存在错误或不足之处,还望告知,侵删,加油!
文章目录:
一.CS1.6游戏介绍
二.逆向分析子弹数对应地址
三.地图变换子弹无限固定
四.逆向分析装备类型
五.逆向分析寻找基址并实现无限子弹
六.总结
从2019年7月开始,我来到了一个陌生的专业——网络空间安全。初入安全领域,是非常痛苦和难受的,要学的东西太多、涉及面太广,但好在自己通过分享100篇“网络安全自学”系列文章,艰难前行着。感恩这一年相识、相知、相趣的安全大佬和朋友们,如果写得不好或不足之处,还请大家海涵!
接下来我将开启新的安全系列,叫“系统安全”,也是免费的100篇文章,作者将更加深入的去研究恶意样本分析、逆向分析、内网渗透、网络攻防实战等,也将通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步,加油~推荐前文:网络安全自学篇系列-100篇
https://blog.csdn.net/eastmount/category_9183790.htm
作者的github资源:
WannaCry:https://github.com/eastmountyxz/
WannaCry-Experiment
逆向分析:https://github.com/eastmountyxz/
SystemSecurity-ReverseAnalysis
网络安全:https://github.com/eastmountyxz/
NetworkSecuritySelf-study
声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。该样本不会分享给大家,分析工具会分享。(参考文献见后)
一.CS1.6游戏介绍
游戏版本:CS1.6
逆向工具:Cheat Engine 6.7
操作系统:Wndows10
二.逆向分析子弹数对应地址
如果选中正确地址并修改,则未选中部分的数值隔一段时间后会跟着变为30。
如果未选中正确地址修改,则剩余部分会跟随之前的子弹数量变换。比如,我将第一行数值修改为20,它立刻会自动变成84(当前子弹数)。
0129BEE4
该部分主要通过Cheat Engine来查找存放子弹的地址,并设置固定值。
后续读者可以尝试C++代码自定义子弹数量并实现该无限子弹功能。
三.地图变换子弹无限固定
解决方法是:找到内存地址中存放子弹且不改变的地址。
基址:不会改变,用于存放血量、金钱等。当它不够或需要存放更多数据时,它会跟系统申请地址,这个地址是系统分配的。所以,变换地图后显示的子弹数地址也会发生变化,我们需要找到其变化规律(偏移地址)即可。
绿色就是基址,只要程序启动,这些地址就归游戏使用。
黑色是临时申请使用的。
0BB556DC
当前子弹数量为17,对应的地址为0BB556DC,它存放在临时地址中(换地图可能变换)。而对应的基址xxxxx,存储的是临时地址的地址,即0BB556DC。这里我们需要通过地址关联,从而进一步发现基址,实现地图变换子弹无限固定的功能,并且它可能是多层指针。
计数:调用次数
指令:汇编代码
同时给出该汇编指令的上下文
ESI = 0BB5561
0ESI + CC = 子弹临时地址0BB556DC
170E6E9A - 48 - dec eax
170E6E9B - 8B CE - mov ecx,esi
170E6E9D - 89 86 CC000000 - mov [esi+000000CC],eax <<
170E6EA3 - 8B 86 A4000000 - mov eax,[esi+000000A4]
170E6EA9 - 8B 40 04 - mov eax,[eax+04]
EAX=0000002C
EBX=00000000
ECX=0BB55610
EDX=02511E60
ESI=0BB55610
EDI=00000001
ESP=0019F324
EBP=00000001
EIP=170E6EA3
0BB55610
地址:0BB5E89
4数值:01213E90
Previous:0BB55610
扫描数值子弹数
射击继续扫描得到196个结果,选择加入地址清单
然后二分查找确定手枪子弹数临时地址
– 0BB86674接着选中地址“找出什么改写这个地址”,发现 mov [esi+000000CC],eax
– EAX = 00000035 - 子弹数(53)– ESI = 0BB865A8
– 0BB865A8 + CC = 0BB86674(临时地址)
勾选十六进制扫描地址0BB865A8
最后依次判断其4条返回结果的地址(均没有绿色基址)
四.逆向分析装备类型
地址19C2CD30 => 00000000
地址19C2CD40 => 0122DB60
地址19C2CD44 => 0122DB60
地址19C2CD30 => 00000000
地址19C2CD40 => 19860DE0
地址19C2CD44 => 19860DE0
当前手持物品1
当前手持物品2
另一个即是否持手枪的标记变量
地址19C2CD30 => 00000000
地址19C2CD40 => 0122DB60
地址19C2CD44 => 0122DB60
mov [esi+000005E8],edi
ESI = 19C2C758
17171C4A - 6A 00 - push 00
17171C4C - FF 90 0C010000 - call dword ptr [eax+0000010C]
17171C52 - 89 BE E8050000 - mov [esi+000005E8],edi <<
17171C58 - 8B 17 - mov edx,[edi]
17171C5A - 8B CF - mov ecx,edi
EAX=00000000
EBX=0122DB60
ECX=19C2C758
EDX=0C2A3C54
ESI=19C2C758
EDI=0122DB60
ESP=0019F9E0
EBP=19860DE0
EIP=17171C58
mov [esi+000005EC],eax
ESI=19C2C758
当前手持物品1-19C2C758+5E8
当前手持物品2-19C2C758+5EC
当前手握枪的子弹数:19C2C758+5E8+CC
五.逆向分析寻找基址并实现无限子弹
最终确定0C2A3C50地址在切换地图时发生变化,刷新地址先清零,然后再将EAX赋值。
mov [esi+7C],00000000
mov [esi+7C],eax
ESI = 0C2A3BD4
找到这个地址之后,我们通过同样的指针方式进行确认。
0C2A3BD4+7c+5e8+cc
第七步,继续查找0C2A3BD4地址,发现了3个绿色基址。
将绿色的添加进去继续判断。
注意,此时的三级指针地图切换地址对应当前子弹数量,即使我们切换地图该值仍然一一对应。
第八步,尝试切换地图,发现这三个绿色值仍然没有变化。接着我们断开连接,然后删除最后一个值。
删除基址3,如果CE断开可以重新打开CS程序即可。
最终确认基址1和基址2应该都是正确的。
第九步,双击基址2的地址并复制,然后进行手动添加地址。
基址1:pcawwclconfig_mm.dll+10A40
基址2:cstrike.exe+1100ABC
第十步,通过基址添加三级指针,从而定位子弹数。
cstrike.exe+1100ABC+7c+5e8++cc
注意该基址带有cstrike.exe名称。
最后锁定该地址,对应下图最后一行。
至此,我们无限子弹的功能成功完成,并且切换地图和枪也是无限子弹。运行效果如下图所示:
最重要的截图如下所示:
六.总结
写到这里,这篇文章就介绍完毕。本文主要通过Cheat Engine逆向分析CS1.6游戏,并实现无限子弹功能,希望您喜欢。
一.CS1.6游戏介绍
二.逆向分析子弹数对应地址
三.地图变换子弹无限固定
四.逆向分析装备类型
五.逆向分析寻找基址并实现无限子弹
同时,文章存在几个问题需要读者自行完善(作者也会继续分享)。
问题1:锁定后敌人也是无限子弹,怎么解决呢?
问题2:读者能不能用VS编写程序定位基址,然后能修改自己想要的子弹数量。
问题3:FPS游戏怎么实现穿墙、血量无敌、猫准等功能呢?
问题4:怎么通过OD动态调试CS1.6游戏呢?
这篇文章中如果存在一些不足,还请海涵。作者作为网络安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,感谢师傅们的教导,深知自己很菜,得努力前行。
前文回顾(下面的超链接可以点击喔):
[系统安全] 二十八.CS逆向分析 (1)你的游戏子弹用完了吗?Cheat Engine工具入门
2020年8月18新开的“娜璋AI安全之家”,主要围绕Python大数据分析、网络空间安全、人工智能、Web渗透及攻防技术进行讲解,同时分享CCF、SCI、南核北核论文的算法实现。娜璋之家会更加系统,并重构作者的所有文章,从零讲解Python和安全,写了近十年文章,真心想把自己所学所感所做分享出来,还请各位多多指教,真诚邀请您的关注!谢谢。2021年继续加油!
晚安女神,爱你和小宝❤
(By:Eastmount 2021-04-19 周一夜于武汉)
参考文献:
https://www.bilibili.com/video/BV1F4411z7Wx